// 知识点：这些操作函数的使用只要加以练习，可以达到知道有这样的操作存在的状态，就应该基本满足学习结果。
//此为44题正确版本
#include <forward_list>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

void func(string &s, string &oldVal, string &newVal) {
  int _size = oldVal.size();
  int _sizeNew = newVal.size();
  int i = 0;

  for (; i < s.size() - _size;) {

    if ((s.substr(i, _size) == oldVal)) {
      s.replace(i, _size, newVal);
      i += (_sizeNew - _size);
    } else {
      i++;
    }
  }
}

int main(int argc, char **argv) {
  string s = "abcdbcbcefg";
  string oldval = "bc";
  string newval = "asas";
  func(s, oldval, newval);
  cout << s << endl;
  system("pause");
  return 0;
}